#pragma once

#include "symboltable.h"
#include "parsetree.h"

#include <string>
#include <vector>
#include <map>

using std::vector;
using std::string;
using std::map;

namespace Thinder
{

struct Operator 
{
    enum Assoc { Left, Right, Non };
    
    string op;
    unsigned int precedence;
    Assoc associativity;
    
    Operator();
    Operator(string op, unsigned int prec, Assoc assoc);
    
};

}

typedef map<string, Thinder::Operator> OperatorMap;

OperatorMap processOperators(ParseTree::Thinder &thinder, SymbolTable &s);
void createOperators();

